package com.softer.chengxin.excel.controller;

import com.softer.chengxin.common.domin.Common;
import com.softer.chengxin.common.domin.CommonResult;
import com.softer.chengxin.common.domin.ManagerPageResult;
import com.softer.chengxin.common.domin.Page;
import com.softer.chengxin.excel.domin.ExcelExportRecordVO;
import com.softer.chengxin.excel.domin.ExportExcel;
import com.softer.chengxin.excel.domin.MenuDTO;
import com.softer.chengxin.excel.service.ExcelService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * @author Wang Xinrui
 * @date 2019/1/10
 */
@RestController
@RequestMapping("/api/excel")
public class ExcelController {

    @Autowired
    private ExcelService excelService;

    /**
     * 获取导出报表列表
     *
     * @param excelName 报表名
     * @param page      页码
     * @param session   session
     * @return 结果集
     */
    @PostMapping("/GetExcelList")
    public ManagerPageResult getExcelList(String excelName, Page page, HttpSession session) {
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isBlank(loginName)) {
            return new ManagerPageResult();
        }
        return excelService.getExcelList(excelName, loginName, page, Common.ZERO);
    }

    /**
     * excel记录详细信息
     *
     * @param id id
     * @return 结果集
     */
    @PostMapping("/ExcelDetail")
    public ExcelExportRecordVO excelDetail(Integer id) {
        return excelService.excelDetail(id);
    }

    /**
     * 删除excel记录
     *
     * @param id id
     * @return 结果集
     */
    @PostMapping("/DeleteExcel")
    public CommonResult deleteExcel(Integer id) {
        return excelService.deleteExcel(id);
    }

    /**
     * 根据parent_id获取excel字段名
     *
     * @param id parent_id（多个id使用“,”隔开）
     * @return 结果
     */
    @PostMapping("/GetExcelMenu")
    public List<MenuDTO> getMenu(Integer id) {
        return excelService.listMenus(id);
    }

    /**
     * 导出关于企业的报表
     *
     * @param exportExcel 报表实体
     *                    fields          需要导出的字段名（多个字段使用 ， 隔开）
     *                    type            excel的类型
     *                    （1：企业基本信息，29：企业人员信息，43：企业年度综合评级，48：项目信息，
     *                    86：项目人员信息，101：物业用房信息，111：业主委员会信息，127：项目经营情况，
     *                    169：优良负面信息，184：教育信息）
     *                    qyName          企业名
     *                    proName         项目名
     *                    district        所在地
     *                    insurance       是否缴纳五险一金
     *                    certificate     是否持有相关中等从业资格证书
     *                    duties          职务，人员类型
     *                    year            年度
     *                    dj              等级
     *                    department      教育培训部门
     *                    subject         培训科目
     *                    excelName       excel名
     *                    excelRecordId   excel记录id（如果不为空说明是修改记录，如果为空新增）
     *                    isCX            是否是查询接口
     *                    infoType        消息类型(1优良信息，2负面信息)
     *                    registerAddress 办公地址
     *                    street          所在街道
     *                    beginTime       开始时间
     *                    endTime         结束时间
     * @param session     session
     * @param page        页码（excel浏览中需要，如果是导出报表前端传无穷大）
     * @return 结果集
     */
    @PostMapping("/ExportExcel")
    public ManagerPageResult exportExcel(ExportExcel exportExcel, Page page, HttpSession session) {
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isBlank(loginName)) {
            return new ManagerPageResult();
        }
        Integer district = exportExcel.getDistrict();
        if (Common.ZERO.equals(String.valueOf(district))) {
            exportExcel.setDistrict(null);
        }
        return excelService.exportExcel(exportExcel, page, loginName);
    }

    /**
     * 获取等级下拉列表
     *
     * @return 等级列表
     */
    @PostMapping("/getDj")
    public List<String> getDj() {
        return excelService.getDj();
    }

}
